<?php

namespace app\helper;

use xianrenqh\Task\Client;

class CronHelper
{
    /**
     * 定义parm中的method
     */
    private $index = "crontabIndex";
    private $log = "crontabLog";
    private $add = "crontabCreate";
    private $reload = "crontabReload";
    private $update = "crontabUpdate";
    private $del = "crontabDelete";

    /*
     * page    是    1    页码
     * limit    是    15    每页条数
     */
    public function index($data)
    {
        $result = $this->common($this->index, $data);
        return $result;
    }

    /*
     * page    是    1    页码
     * limit    是    15    每页条数
     * crontab_id    否    1    计划任务ID
     */
    public function log($data)
    {
        $result = $this->common($this->log, $data);
        return $result;
    }

    /*
     * title    text    是    输出 webman 版本    任务标题
     * type    text    是    1    任务类型 (1 command, 2 class, 3 url, 4 eval ,5 shell)
     * rule    text    是    * * * * * *    任务执行表达式
     * target    text    是    php webman version/ version    调用任务字符串
     * parameter    text    否    {}    调用任务参数(url和eval无效)
     * remark    text    是    每3秒执行    备注
     * sort    text    是    0    排序
     * status    text    是    1    状态[0禁用; 1启用]
     * singleton    text    否    1    是否单次执行 [0 是 1 不是]
     */
    public function add($data)
    {
        $result = $this->common($this->add, $data);
        return $result;
    }

    /*
     * id    text    是    1
     * title    text    是    输出 webman 版本    任务标题
     * type    text    是    1    任务类型 (1 command, 2 class, 3 url, 4 eval ,5 shell)
     * rule    text    是    * * * * * *    任务执行表达式
     * target    text    是    php webman version/ version    调用任务字符串
     * parameter    text    否    {}    调用任务参数(url和eval无效)
     * remark    text    是    每3秒执行    备注
     * sort    text    是    0    排序
     * status    text    是    1    状态[0禁用; 1启用]
     * singleton    text    否    1    是否单次执行 [0 是 1 不是]
     */
    public function update($data = [])
    {
        $result = $this->common($this->update, $data);
        return $result;
    }

    /*
     * id    text    是    1,2    计划任务ID 多个逗号隔开
     */
    public function delete($data = '')
    {
        $result = $this->common($this->del, $data);
        return $result;
    }

    /*
     * id    text    是    1,2    计划任务ID 多个逗号隔开
     */
    public function reload($data = '')
    {
        $result = $this->common($this->reload, $data);
        return $result;
    }

    // 通用计划任务接口
    public function common($method = '', $data = [])
    {
        if ($method != '') {
            $param = [
                'method' => $method,
                'args' => $data,
            ];
            $result = Client::instance()->request($param);
            return json_decode(json_encode($result));
        } else {
            return json(['code' => 200, 'msg' => '缺少method请求方式']);
        }
    }
}
